package com.xhj.mybatis.mapping;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Properties;

/**
 * DatabaseIdProvider
 *
 * @author XJks
 * @description DatabaseIdProvider 接口用于为不同数据库类型提供唯一标识符（id），这样可以根据数据库类型定制 SQL 查询，支持多数据库厂商或版本。
 */
public interface DatabaseIdProvider {

    /**
     * 设置属性方法，默认实现为空（NOP，No Operation）。
     * 子类可以重写此方法来处理自定义配置参数。
     *
     * @param p 配置属性对象
     */
    default void setProperties(Properties p) {
        // NOP（无操作），即默认什么都不做
    }

    /**
     * 获取数据库类型的唯一标识符（id）。
     * 实现类需要根据传入的数据源，返回对应数据库的 id。
     *
     * @param dataSource 数据源对象，包含数据库连接信息
     * @return 数据库类型的 id（如 "MySQL", "Oracle" 等）
     * @throws SQLException 如果获取数据库信息时发生 SQL 异常
     */
    String getDatabaseId(DataSource dataSource) throws SQLException;
}
